package sgpt.comentario;

import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;

import sgpt.Beans.Cidade;
import sgpt.Beans.itemRoteiro;
import sgpt.Beans.DAO.ConstantesDAO;
import sgpt.Beans.DAO.JdbcDaoFactory;
import sgpt.Beans.DAO.interfaces.DAOFactory;
import sgpt.Beans.DAO.interfaces.IclienteDAO;
import sgpt.passeio.IpasseioDAO;
import sgpt.passeio.Passeio;

public class ComentarioDAO implements IcomentarioDAO {
	
	//Collection<Comentario> comentarios = new ArrayList<Comentario>();
	Statement db;
	private IclienteDAO clienteDAO;
	private IpasseioDAO passeioDAO;
	
	public ComentarioDAO(Connection conn) {
		super();
		//Passeio passeio = (Passeio) item;
		String sql = "select * from passeios,comentarios where passeios.id=comentarios.passeio_id;";
		//System.out.print("comentarios do passeio "+passeio.getNome());
		DAOFactory dao = JdbcDaoFactory.getInstance();
		clienteDAO = dao.getClienteDAO();
		passeioDAO = dao.getPasseioDAO();
		try {
			this.db = conn.createStatement();
		} catch (SQLException e) {
			e.printStackTrace();
			System.out.println("******* Erro ao criar Statement "+this.getClass().getSimpleName());
			System.out.println(e.getMessage());
		}
	}

	public List<Comentario> getComentarios(itemRoteiro item) {
		List<Comentario> comentariosItem = new ArrayList<Comentario>();
		Passeio passeio=(Passeio)item;
		Comentario comentario;

		String sql = "select comentarios.* from comentarios join passeios on passeio_id=passeios.id where passeio_id = " +passeio.getID();
		try {
			ResultSet rs = db.executeQuery(sql);
			while (rs.next()){
				comentario = new Comentario();
				comentario.setDescricao(rs.getString(ConstantesDAO.descricao));
				comentario.setNota(rs.getDouble(ConstantesDAO.nota));
				comentario.setPasseio(passeioDAO.getPasseioByID((rs.getLong(ConstantesDAO.passeio_id))));
				comentario.setCliente(clienteDAO.getClienteByID(rs.getLong("client_id")));
				comentariosItem.add(comentario);
			}
			rs.close();
		} catch (SQLException e) {
			e.printStackTrace();
			System.out.println("****************** Erro em getComentario: "+this.getClass().getSimpleName());
			System.out.println(e.getMessage());
		}
		
		return comentariosItem;
	}

	public void insereComentario(Comentario coment) {
		String sql="insert into comentarios(id,descricao,nota,) values(NULL,'"+coment.getDescricao()+"',"+
					coment.getNota()+","+coment.getCliente().getId()+","+coment.getPasseio().getID()+")";
		try {
			db.executeUpdate(sql);
		} catch (SQLException e) {
			e.printStackTrace();
			System.out.println("***************** Erro ao inserir em "+this.getClass().getSimpleName());
			System.out.println(e.getMessage());
		}
		
	}

	public void removeComentario(Comentario coment) {
		// TODO Auto-generated method stub
		
	}

	public void updateComentario(Comentario coment) {
		// TODO Auto-generated method stub
		
	}
 
}
 
